package com.ld.dao;

import com.ld.entity.Customer;
import com.ld.entity.Staff;
import com.ld.entity.UserFile;
import org.apache.ibatis.annotations.Param;


public interface UserDao {

    /**登录
     * @param userName 账号
     * @return 员工实体类
     */
     Staff staffLogin(@Param("userName") String userName);

    /**
     * @param staffId 员工id
     * @return 返回该员工的详细,不应包括(密码,盐,权限)
     */
     Staff getStaffInfoByStaffId(@Param("staffId") Integer staffId);

    /**
     * @param userName 员工账号
     * @return 返回该员工的详细,不应包括(密码,盐,权限)
     */
     Staff getStaffInfoByStaffUserName(@Param("userName") String userName);

    /**
     *修改密码
     * @param staffId id
     * @param newPwd 新密码
     * @param newSalt 新盐
     * @return 受影响行数
     */
     Integer changePwd(@Param("staffId") Integer staffId,@Param("newPwd")String newPwd,
                          @Param("newSalt")String newSalt);


    /**
     * @param customerId 客户id
     * @return 此客户的详细信息
     */
     Customer getCustomerInfoByCustomerId(@Param("customerId") Integer customerId);

    /**
     * 根据账号userName,修改staff表的
     * first_name,last_name,email
     * @param staff 员工实体类
     * @return 返回受影响行数
     */
     Integer changeStaffTab(Staff staff);


    /**
     * 根据账号userName,修改address表的
     * :address, address2, district, city_id, postal_code, phone (修改cityId,Country也会改变)
     * @param staff 员工实体类
     * @return 返回受影响行数
     */
     Integer changeAddressTab(Staff staff);

    /**
     *  根据账号查询此用户是否有头像 (1个用户只能有1张头像)
     * @param userName 用户账号
     * @return 文件对象,只查询fileId,newName,ext,path
     */
     UserFile hasHeadPhoto(@Param("userName") String userName);

    /**
     * 插入文件信息
     * @param userFile 文件信息
     * @return 受影响行数 1成功,0失败
     */
     Integer insertFileInfo(UserFile userFile);

    /**
     * 更新文件信息
     * @param userFile 根据fileId修改,因为userName(账号下可能有多个文件),但fileId唯一
     * @return 受影响行数 1成功,0失败
     */
     Integer updateFileInfo( UserFile userFile);


}
